package com.atao.baokede.controller;

import com.atao.baokede.pojo.Item;
import com.atao.baokede.pojo.PageBean;
import com.atao.baokede.pojo.Result;
import com.atao.baokede.pojo.vo.ChargeOrderVo;
import com.atao.baokede.service.ItemService;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;
import java.math.BigDecimal;
import java.util.Map;

import static com.atao.baokede.constant.ItemConstant.PAGE_SIZE;

/**
 * 商品层
 */
@RestController
@RequestMapping("/item")
public class ItemController {
    @Autowired
    private ItemService itemService;

    /**
     * 根据商品id查询商品
     *
     * @param id 商品id
     * @return 商品信息
     */
    @GetMapping("/findById")
    public Result<Item> findById(Long id) {
        Item item = itemService.findById(id);
        return Result.success(item);
    }

    /**
     * 搜索商品接口(每页大小为48，一行展示6条数据）
     *
     * @param keyword     搜索关键词
     * @param searchAfter 分页锚点值，首次查询不传，返回值是["9"]的形式，直接传9过来（9为id）
     * @param direction   分页方向，"next"表示下一页，"prev"表示上一页，默认为"next"
     * @return 搜索结果和分页信息，如果返回数据的个数不足48个，即代表这是最后一页
     */
    @GetMapping("/search")
    public Result<Map<String, Object>> searchItems(@RequestParam String keyword,
                              @RequestParam(required = false) String searchAfter,
                              @RequestParam(defaultValue = "next") String direction) throws IOException {
        // 将参数传递给service层处理
        Map<String, Object> result = itemService.searchItems(keyword, searchAfter, direction, PAGE_SIZE);
        return Result.success(result);
    }

    /**
     * 分页查询首页商品接口（返回48条数据，一行展示6条）
     *
     * @param pageNum  页码
     * @return 商品列表
     */
    @GetMapping("/findHomeItems")
    public Result<PageBean<Item>> findHomeItems(
            @RequestParam Integer pageNum
    ) {
        PageBean<Item> pb = itemService.findHomeItems(pageNum);
        return Result.success(pb);
    }
}